package n13.second;

import java.util.stream.Stream;

public class S04 {
	public static void main(String[] args) {
		String saying="Practice makes perfect"; //熟能生巧
		String[]ss=saying.split(" "); //获取字符串数组
		//(1)没有初始值，流中第1个元素作为第1个参数充当初始值，第2个元素作为第2个参数
		String r1 = Stream.of(ss).reduce((result, item)->result+", "+item).get();
		System.out.println(r1);
		//(2)初始值和流中元素具有相同的类型，最终合并为一个字符串结果
		String r2 = Stream.of(ss).reduce("String: ",(result, item)->result+"\t"+item);
		System.out.println(r2);
		String r3 = Stream.of(ss).reduce("Length: ",(result, item)->result+"\t"+item.length());
		System.out.println(r3);
		//(3)共有3个参数，可返回不同于流中类型的结果，第3个参数用于合并并行处理的多个结果为一个结果
		Integer r4 = Stream.of(ss).parallel() //并行流
			.reduce(0, (result, item)->result+item.length(), (result1, result2)->result1+result2);
		System.out.println("各个单词总长度："+r4);
	}

}
